#ifndef _HJ212_DATA_MSG_H
#define _HJ212_DATA_MSG_H

#include "hj212_client_def.h"

enum hj212_value_enable_flag
{
    HJ212_ZSRTD_ENABLE = (1 << 0),   // 是否打包瞬时折算值
    HJ212_ZSHIS_ENABLE = (1 << 1),   // 是否打包历史数据折算值
    HJ212_COU_ENABLE = (1 << 2),     // 是否打包总量
    HJ212_HISFLAG_ENABLE = (1 << 3), // 历史数据是否打包flag
};

/* 编码参数 */
struct polcode_param
{
    char code[HJ212_POLCODE_MAX_LEN]; // 污染物因子的编码
    int codeid;                       // codeid，不一定需要
    int decimal_num;                  // 小数点位数
};

/* 数值结构 */
struct pol_rtval
{
    struct polcode_param param;

    float value;

    uint32_t enable_flag;
    float zs_value;

    uint32_t datamark;
};

struct pol_his_data
{
    struct polcode_param param;

    float min;   // 最小值
    float avg;   // 平均值
    float max;   // 最大值
    float cou;   // 周期总量值
    float total; // 累计总量值

    uint32_t enable_flag;

    float zs_min; // 最小值
    float zs_avg; // 平均值
    float zs_max; // 最大值

    uint32_t datamark;
};

/* 污染物状态数据报文 - 动态管控 */
struct hj212_polstate_msg
{
    struct hj212_datamsg parent;
    char polcode[HJ212_POLCODE_MAX_LEN]; // 污染物因子的编码
};

/* 污染物状态 - 对应状态参数 */
struct pol_state
{
    struct polcode_param param;
    char value[HJ212_POLSTATE_MAX_LEN];
};

int hj212_datamsg_pack_polstate(struct hj212_datamsg *msg, int protocol, struct timeval precise_time, int item_maxlen, char *buffer, int len);
int hj212_datamsg_pack_rtdata(struct hj212_datamsg *msg, int protocol, struct timeval precise_time, int item_maxlen, char *buffer, int len);
int hj212_datamsg_pack_hisdata(struct hj212_datamsg *msg, int protocol, struct timeval precise_time, int item_maxlen, char *buffer, int len);












#endif
